package outbound_task

import (
	"context"
	"git.mycaigou.com/gfyx/micro-gfyx-oppty-service/infrastructure/repository/remote/baiying_remote"
	pb "git.mycaigou.com/gfyx/micro-gfyx-oppty-service/proto/micro_gfyx_oppty_service_proto/micro-gfyx-oppty-service/market"
)

type OutboundTaskServiceIface interface {
	// CreateTask 创建任务
	CreateTask(ctx context.Context, request *pb.CreateTaskRequest) (*pb.CreateTaskResponse, error)
	// UpdateTask 更新任务
	UpdateTask(ctx context.Context, request *pb.UpdateTaskRequest) (*pb.UpdateTaskResponse, error)
	// 修改客户意向
	UpdateIntention(ctx context.Context, request *pb.UpdateIntentionRequest) error
	// DeleteTask 删除任务
	DeleteTask(ctx context.Context, request *pb.DeleteTaskRequest) (*pb.DeleteTaskResponse, error)
	// ExecuteTask 执行任务
	ExecuteTask(ctx context.Context, request *pb.ExecuteTaskRequest) (*pb.ExecuteTaskResponse, error)
	// GetTaskList 获取任务列表
	GetTaskList(ctx context.Context, request *pb.GetTaskListRequest) (*pb.GetTaskListResponse, error)
	// GetAllTaskListId 获取所有任务id
	GetAllTaskListId(ctx context.Context, request *baiying_remote.GetTaskListRequest) ([]int64, error)
	// GetTaskDetail 获取任务详情
	GetTaskDetail(ctx context.Context, request *pb.GetTaskDetailRequest) (*pb.GetTaskDetailResponse, error)
	// GetUnStartCallList 获取任务详情里进行中接口
	GetUnStartCallList(ctx context.Context, request *pb.GetUnStartCallListRequest) (*pb.GetUnStartCallListResponse, error)
	// ImportCrowd 向任务中导入人群包
	ImportCrowd(ctx context.Context, request *pb.ImportCrowdRequest) (*pb.ImportCrowdResponse, error)
	// GetClueList 获取外呼线索列表接口
	GetClueList(ctx context.Context, request *pb.GetOutboundClueListRequest) (*pb.GetOutboundClueListResponse, error)
	GetClueDetail(ctx context.Context, request *pb.GetOutboundClueDetailRequest) (*pb.GetOutboundClueDetailResponse, error)
	ExportTaskLog(ctx context.Context, request *pb.ExportTaskLogRequest) (*pb.ExportTaskLogResponse, error)
	// HandleCallback 接收回调
	HandleCallback(ctx context.Context, request *pb.CallbackRequest) error
	SetTaskLogRead(ctx context.Context, callInstanceId int64) error
	AuditOutboundClue(ctx context.Context, request *pb.AuditOutboundClueRequest) error
}
